package dao

// 这是 Region 的全局公开dao对象，被service层调用!
var RegionDao = regionDao{}

// 行政区域表
// 这是 region表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type Region struct {
	Id   int32  `json:"id" form:"id" v:"id" db:"id"`
	Pid  int32  `json:"pid" form:"pid" v:"pid" db:"pid"`     // 行政区域父ID，例如区县的pid指向市，市的pid指向省，省的pid则是0
	Name string `json:"name" form:"name" v:"name" db:"name"` // 行政区域名称
	Type int8   `json:"type" form:"type" v:"type" db:"type"` // 行政区域类型，如如1则是省， 如果是2则是市，如果是3则是区县
	Code int32  `json:"code" form:"code" v:"code" db:"code"` // 行政区域编码

}

// 注意:这是 Region 的私有dao对象，只能在dao层内使用!
type regionDao struct {
	InsertTemplate func(arg Region) (int64, error)        //插入一条记录
	UpdateTemplate func(arg Region) (int64, error)        //更新一条记录
	DeleteTemplate func(id int64) (int64, error)          `args:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (Region, error)         `args:"id"` //根据传入的主键获取一条记录
	List           func(arg RegionList) ([]Region, error) //模糊分页查询
}

/*
// 这是 region 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type RegionPostman struct {
id
pid
name
type
code

}*/

// 这是 region 表的批量请求参数
type RegionReq struct {
	List []Region `json:"list" form:"list"`
}

// 这是 regionDao.List()方法的请求参数
type RegionList struct {
	Page
}
